package com.kool.kadmin.system.dao;

import com.kool.kadmin.system.bean.SysParamDo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author luyu
 */
public interface SysParamDao {
    /**
     * 插入
     *
     * @param sysParamDo
     * @return
     */
    int insert(SysParamDo sysParamDo);

    /**
     * 根据id查询
     *
     * @param id
     * @return
     */
    SysParamDo getById(@Param("id") Long id);

    /**
     * 批量插入
     *
     * @param list
     * @return
     */
    int batchInsert(List<SysParamDo> list);

    /**
     * 更新
     *
     * @param sysParamDo
     * @return
     */
    int updateById(SysParamDo sysParamDo);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    int deleteById(@Param("id") Long id);

    /**
     * 符合条件总条数
     *
     * @param sysParamDo
     * @return
     */
    int countTotal(SysParamDo sysParamDo);

    /**
     * 分页查询
     *
     * @param condition
     * @param offset
     * @param rows
     * @return
     */
    List<SysParamDo> getPage(@Param("condition") SysParamDo condition, @Param("offset") int offset, @Param("rows") int rows);

    /**
     * 查询所有
     *
     * @return
     */
    List<SysParamDo> getAll();

    /**
     * 根据参数码查询
     *
     * @param code
     * @return
     */
    SysParamDo getByCode(String code);

    /**
     * 根据参数码更新
     *
     * @param sysParamDo
     * @return
     */
    Integer updateByCode(SysParamDo sysParamDo);

    /**
     * 查询父参数下所有子参数
     *
     * @param fatherCode
     * @return
     */
    List<SysParamDo> getSubParams(String fatherCode);

    /**
     * 查询父参数下的key对应子参数
     *
     * @param fatherCode
     * @param paramKey
     * @return
     */
    SysParamDo getSubParam(@Param("fatherCode") String fatherCode, @Param("paramKey") String paramKey);

    /**
     * 更新子参数值
     *
     * @param fatherCode
     * @param paramKey
     * @param paramValue
     */
    Integer updateSubValue(@Param("fatherCode") String fatherCode, @Param("paramKey") String paramKey, @Param("paramValue") String paramValue);

    /**
     * 根据参数码删除参数
     *
     * @param paramCode
     */
    Integer deleteByCode(@Param("paramCode") String paramCode);
}
